package com.aifund.app.service;


import com.aifund.app.entity.form.regist.PhoneRegisterForm;
import com.aifund.app.entity.form.user.BindApiForm;
import com.aifund.app.entity.form.user.IntegrationCashForm;
import com.aifund.app.entity.form.user.ModifyInformationForm;
import com.aifund.app.entity.form.user.RequestExchangeManForm;
import com.aifund.app.entity.vo.LoginVo;
import com.aifund.app.entity.vo.PhoneRegisterVo;
import com.aifund.app.entity.vo.robot.GetExchangeManTacticsVo;
import com.aifund.app.entity.vo.user.MyAssetsVo;
import com.aifund.common.entity.AiUser;
import com.aifund.common.result.ResultBody;
import java.math.BigDecimal;
import java.util.List;

public interface UserService{
    /**
     * 通过手机号和密码登录
     * @param phone
     * @param pwd
     * @return
     */
    ResultBody<LoginVo> loginByPhoneAndPwd(String phone, String pwd);

    /**
     * 通过邮箱和密码登录
     * @param email
     * @param pwd
     * @return
     */
    ResultBody<LoginVo> loginByEmailAndPwd(String email, String pwd);

    /**
     * 获取积分
     * @param userId
     * @return
     */
    BigDecimal getIntegration(Long userId);

    /**
     * 用户提币
     * @param cashForm
     */
    void integrationCash(IntegrationCashForm cashForm,Long userId);

    /**
     * 获取token
     * @param userId
     * @return
     */
    String getToken(Long userId);

    /**
     * 手机号注册
     * @param form
     * @return
     */
    PhoneRegisterVo registerByPhone(PhoneRegisterForm form);

    AiUser getById(Long id);

    Object getAccount(Long userId);

    void updateHeader(String header,Long userId);

    void updateFirstOpen(Long userId);

    /**
     * 绑定API
     */
    void bindApi(BindApiForm form,Long userId);

    /**
     * 修改资料
     */
    void modifyInformation(ModifyInformationForm form,Long userId);

    /**
     * 申请交易员
     * @param form
     * @return
     */
    void requestExchangeMan(RequestExchangeManForm form,Long userId);


    /**
     * 充值
     * @param filePath
     * @param chargeNum
     * @param userId
     */
    void charge(String filePath, BigDecimal chargeNum,Long userId);

    /**
     * 我的资产
     * @param userId
     * @return
     */
    MyAssetsVo myAssets(Long userId,Long exchangeId);


    /**
     * 获取交易员策略
     * @param exchangeId
     * @return
     */
    List<GetExchangeManTacticsVo> getExchangeTactics(Long exchangeId);



}
